首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏一个会写诗的程序员的博客

    Apache Arrow 简介

    背景 https://arrow.apache.org/ 由于历史原因,Snowflake一直使用了JSON作为结果集(ResultSet)的序列化方式,引起了许多问题。 经过一系列的研究,我们最终决定采用Apache Arrow作为我们新的结果集序列化方式。这篇文章对arrow进行了一些简单的介绍,并且反思了arrow想解决的一些问题。 Apache Arrow是什么 数据格式:arrow 定义了一种在内存中表示tabular data的格式。这种格式特别为数据分析型操作(analytical operation)进行了优化。 Format Apache Arrow defines a language-independent columnar memory format for flat and hierarchical data Ecosystem Apache Arrow is software created by and for the developer community.

    3K30编辑于 2022-01-27
  • 来自专栏光城(guangcity)

    Apache Arrow Acero执行引擎

    Apache Arrow流执行引擎 对于许多复杂的计算,在内存或计算时间内,连续的计算函数的直接调用都是不可行的。 为了更加有效的提高资源使用率、促进多批数据的消费,Arrow提供了一套流式执行引擎,称为Acero。 如果自己要在Arrow里面实现一个新算子,如物化、MergeJoin等算子,我们需要如何实现? 本节将以最复杂的HashJoin算子为例,拆解其实现原理,便于快速上手。 涉及的内容非常庞杂,可以说把HashjoinNode实现出来,对于Arrow的整个框架基本可以覆盖了(当然还有ipc/kernel等)。 因为在最外面一直在等当前节点处理完,可以没处理完,就死循环了,不过arrow的Future有超时控制。InputeFinished需要做两件事情: 第一:通知下游节点你可以结束了。

    98720编辑于 2023-09-02
  • 来自专栏光城(guangcity)

    Apache arrow顶级项目调试

    Apache arrow顶级项目调试 arrow官方从7.x版本开始提供了一个gdb工具,叫做gdb_arrow.py,可以在仓库里面下载下来。 调试原理可以阅读之前写的文章: 玩转C++调试之Python的GDB库增强 使用办法非常简单,直接: source /code/arrow/cpp/gdb_arrow.py 如果在gdb里面source 例如: File "/code/arrow/cpp/gdb_arrow.py", line 60 f'from GDB\'s response:\n"""{s}"""') ^ SyntaxError fields = {["fd0"] = arrow::int32(), ["fd1"] = arrow::uint8(), ["fd2"] = arrow::int16()} 再试试batch 以后调试arrow又更加方便了。

    42720编辑于 2023-09-14
  • 来自专栏光城(guangcity)

    Apache Arrow kernel设计与实现

    Arrow kernel设计与实现 1.什么是kernel 最近在实现几个自定义的Arrow Kernel,需要非常了解Arrow源码,里面的代码设计是什么样子,怎么快速上手,如何高度自定制开发,里面有哪些比较有意思的设计等等问题 Arrow是一个列存格式,同时也有一个streaming execution engine,整个执行器的Plan节点,可以拆分为Source、Sink、Agg、Proj、Filter等等。 以Agg为例,对于PostgreSQL来说Agg可以分为两阶段,PartialAgg与FinalAgg,而在Arrow这边只有一个mean运算,也就是一次聚集。 对于Arrow来说,使用Agg便是往AggOption里面设置一个mean函数,这个函数直接得到的是一个avg结果,跟我们的预期不符,因此需要拆分为: avg_trans(第一阶段) 输入为任意类型,输出为 struct<sum, count> avg_final(第二阶段) 输入为struct<sum, count>,输出为avg结果 由于Arrow在每个阶段支持consume->merge->finalize

    55530编辑于 2023-09-02
  • ES|QL in JavaScript: 利用 Apache Arrow 助手功能

    本文将介绍最新的助手功能 toArrowReader 和 toArrowTable,它们专门支持 Apache Arrow 格式,并集成在 Elasticsearch Node.js 客户端中。 什么是 Apache ArrowApache Arrow 是一种列式数据分析工具,其格式在现代编程环境中不受编程语言的限制。 来源: https://arrow.apache.org/overview/在这篇文章中可以了解如何结合 ES|QL 使用 Arrow。 ES|QL Apache Arrow 助手功能在这些例子中,我们将使用 Elastic 的 Web 日志示例数据集。您可以按照文档进行数据导入。 在这篇文章中,我们学习了如何使用 ES|QL 客户端助手将 Elasticsearch 响应解析为 Arrow Reader 或 Arrow Table。

    18810编辑于 2025-06-17
  • 来自专栏网络安全技术点滴分享

    Apache Arrow:跨语言的内存分析工具集

    项目标题与描述Apache Arrow是一个跨语言的开发平台,用于内存数据分析。它提供了一种标准化的列式内存格式,支持高效的数据交换和处理,适用于各种大数据处理场景。 安装指南依赖项CMake 3.5+C++编译器(支持C++11)Python 3.6+(可选)R(可选)安装步骤克隆仓库:git clone https://github.com/apache/arrow.gitcd ("arrow")使用说明基础示例以下是一个简单的C++示例,展示如何创建一个Arrow数组:#include <arrow/api.h>arrow::Int64Builder builder;builder.Append The ASF licenses this file// to you under the Apache License, Version 2.0 (the// "License"); you may 3);std::shared_ptr<arrow::Array> array;builder.Finish(&array);表格操作(Python)# Licensed to the Apache Software

    41210编辑于 2025-07-30
  • 来自专栏随手写个文章

    基于AIGC写作尝试:深入理解 Apache Arrow

    Apache Arrow的架构主要由三个部分组成:内存格式、列式数据结构和交互协议。内存格式Apache Arrow的内存格式是一种基于二进制序列的数据结构,可以表示各种类型的数据。 应用让我们更仔细地看一下Apache Arrow如何在不同的语言和平台中实现:C ++:Apache Arrow的C++实现是参考实现,并作为其他语言绑定的基础。 Apache Arrow被引入作为一个开源项目,提供跨语言的内存数据开发平台。Apache Arrow有几个优点,包括不需要序列化和反序列化的不同系统和编程语言之间的高效数据交换。 在现代数据生态系统中,Apache Arrow因其高性能和灵活性而越来越受欢迎。Apache Arrow支持多种编程语言,包括Python、Java、C++等。 参考【1】Arrow列式格式【2】项目文档【3】Apache Arrow GitHub repository【4】Introduction to Apache Arrow【5】Apache Arrow

    7.9K40编辑于 2023-04-15
  • 来自专栏光城(guangcity)

    如何在Apache Arrow中定位与解决问题

    如何在apache Arrow定位与解决问题 最近在执行sql时做了一些batch变更,出现了一个 crash问题,底层使用了apache arrow来实现。 https://github.com/apache/arrow/pull/40817 背景 最近想修改一下arrow batch的大小,当调整为65536后发现crash,出现: terminate called locals.batch_prtn_ranges[prtn_id + 1] - locals.batch_prtn_ranges[prtn_id]; 继续跟进找到PartitionSort的Eval,里面有几处非常需要注意: ARROW_DCHECK

    84910编辑于 2024-04-03
  • 来自专栏PostgreSQL研究与原理解析

    湖仓一体 - Apache Arrow的那些事

    湖仓一体 - Apache Arrow的那些事 Arrow是高性能列式内存格式标准。 Gandiva 是一个开源项目,旨在为 Apache Arrow 提供高效的数据处理功能。 A3:这也是一个很好的问题,Arrow 有自己的一套执行框架,叫做 Arrow Acero,它对向量化的支持是非常友好的。 utm_id=0 https://github.com/apache/arrow https://arrow.apache.org/docs/cpp/ https://www.dremio.com/blog /announcing-gandiva-initiative-for-apache-arrow/ https://zhuanlan.zhihu.com/p/678108750 https://cloud.tencent.com

    2.4K10编辑于 2024-05-06
  • 来自专栏最新最全的大数据技术体系

    ✨新一代的存储格式Apache Arrow(四)

    文章目录 前言 历史文章 新一代的存储格式Apache Arrow Arrow简介 Arrow是如何提升数据移动性能的 后记 前言 目前博客Hadoop文章大都停留在Hadoop2.x阶段,本系列将依据黑马程序员大数据 REST HTTP API的使用(二)HttpFS [hadoop3.x系列]Hadoop常用文件存储格式及BigData File Viewer工具的使用(三) ✨[hadoop3.x]新一代的存储格式Apache Arrow(四) 新一代的存储格式Apache Arrow Arrow简介 l Apache Arrow是一个跨语言平台,是一种列式内存数据结构,主要用于构建数据系统。 Apache Arrow在2016年2月17日作为顶级Apache项目引入。 l Apache Arrow发展非常迅速,并且在未来会有更好的发展空间。 例如,Spark可以使用Python进程发送Arrow数据来执行用户定义的函数。 l 无需进行反序列化,可以直接从启用了Arrow的数据存储系统中接收Arrow数据。

    62920编辑于 2021-12-06
  • 来自专栏Rust语言学习交流

    【Rust日报】2021-08-21 Apache Arrow DataFusion 5.0.0 版本

    文章链接,https://github.com/Nukesor/pueue/releases/tag/v1.0.0 Gitlab 链接,https://github.com/Nukesor/pueue Apache Arrow DataFusion 5.0.0 版本 Apache Arrow 团队很高兴地宣布 DataFusion 5.0.0 版本。 1 Yichen Wang 1 baishen 1 Nga Tran 1 rdettai 1 Marco Neumann 文章链接,https://arrow.apache.org /blog/2021/08/18/datafusion-5.0.0/ Gitlab 链接,https://github.com/apache/arrow-rs ---- From 日报小组 TOM 社区学习交流平台订阅

    70110发布于 2021-09-08
  • 来自专栏AustinDatabases

    数据库信息速递: Apache Arrow 如何加速 InfluxDB (翻译)

    于是apache arrow 应运而生 ,apache arrow 是一个开源的框架定义了一种内存中列式数据的格式,每个分析处理引擎都可以使用, apache arrow 由impala ,spark, 于是,Apache Arrow 应运而生了。Apache Arrow 是一个开源框架,定义了一种内存中的列式数据格式,每个分析处理引擎都可以使用。 开发人员使用 Rust 在 Apache ArrowApache DataFusion 和 Apache Parquet 之上构建了这个新引擎。 InfluxData 对 Arrow 的其他贡献还包括:快速、内存高效的排序算法。在各个层面上提升性能(apache/arrow-rs#1248 和 apache/arrow-rs#2646)。 通过默认安全和额外的错误检查使 Arrow crate 更加安全(apache/arrow-rs#817)。Apache Arrow 正在成为许多公司架构中的关键组件。

    72510编辑于 2023-12-11
  • 来自专栏大飞的部落阁

    Arrow时间处理神器

    关于 Arrow 我们在日常的工作中,经常会对时间对象进行处理,但是内置的库处理时间和日期都稍显复杂,不是很优雅。今天我们为大家介绍一个简单易用的处理时间的库 Arrow。 import arrow utc = arrow.utcnow() print(utc) # 将utc时间转化为本地时间+8 print(utc.to('local')) locatime2utc # 本地当前时间 print(arrow.now()) print((arrow.now()).to('utc')) 时间解析 get 方法用来解析时间。 import time,arrow # 时间戳转解析为localtime print(time.time()) print(arrow.get(time.time(),tzinfo='local')) # 格式化时间解析 tmStr = '2021-7-21 19:24:12' print(arrow.get(tmStr)) 格式化时间 # 格式化时间 now = arrow.now() year

    51610编辑于 2022-06-17
  • 来自专栏自译文章/自学记录

    The this parameter in arrow function - Arrow function中的this参数

    因为书中对于arrow function中this的解释,我也不是很理解。 当我们调用arrow functions时,它们没有自己的隐式的this参数;它们只记得 在创建它们时 this参数的值。 DOCTYPE html> <html> <head> <title>Using arrow functions to work around callback function contexts< Arrow functions没有this arguments这些参数。当Arrow functions被创建时,this参数是在enclosing scope中被找到的。 ---- 所以说,书中的话并不是那么的准确:arrow functions don’t get their own implicit this parameter when we call them;

    1.2K20发布于 2019-08-26
  • 来自专栏光城(guangcity)

    Arrow HashJoin限制

    Arrow HashJoin限制 0.背景 最近在测试一些大数据量的HashJoin计算,例如:用户层设置batch数为600000,那么会导致crash。 // crash point ARROW_DCHECK(num_rows > 0 && num_rows <= (1 << 15)); 为了研究这个值,于是写下个这篇文章。 2.布隆过滤器 自Arrow 9.0版本后,新增HashJoin的BF功能,在执行计划上新增PrepareToProduce接口,该接口会在每个节点开始Produce之前做一些准备工作,目前只用在HashJoin // TODO(ARROW-15732) // Each side of join might have an IO thread being called from.

    43330编辑于 2023-09-02
  • 来自专栏祝威廉

    PySpark 通过Arrow加速

    ("spark.sql.execution.arrow.enabled", "true") 你也可以在submit命令行里添加。 那么Arrow是如何加快速度的呢? 主要是有两点: 序列化友好 向量化 序列化友好指的是,Arrow提供了一个内存格式,该格式本身是跨应用的,无论你放到哪,都是这个格式,中间如果需要网络传输这个格式,那么也是序列化友好的,只要做下格式调整 向量化指的是,首先Arrow是将数据按block进行传输的,其次是可以对立面的数据按列进行处理的。这样就极大的加快了处理速度。 Execution time max: 6.716, average: 6.716 然后同样的代码,我们把arrow设置为true,是不是会好一些呢?

    2.2K20发布于 2019-02-27
  • 来自专栏生信探索

    使用Arrow管理数据

    arrow.apache.org Apache Arrow defines a language-independent columnar memory format for flat and hierarchical Ecosystem Apache Arrow is software created by and for the developer community. R install.packages("arrow") library(arrow) # write iris to iris.arrow and compressed by zstd arrow::write_ipc_file (iris,'iris.arrow', compression = "zstd",compression_level=1) # read iris.arrow as DataFrame iris=arrow ) using Arrow, DataFrames # read iris.arrow as DataFrame iris = Arrow.Table("iris.arrow") |> DataFrame

    67720编辑于 2023-04-17
  • 来自专栏Apache Doris

    Apache Doris 支持 Arrow Flight SQL 协议,数据传输效率实现百倍飞跃

    为提供更高效的数据传输方案,Apache Doris 在 2.1 版本中基于 Arrow Flight SQL 协议实现了高速数据传输链路,使得数据传输性能实现百倍飞跃。 Apache Doris 间数据传输效率。 以 Python 读取 Apache Doris 中数据为例,Apache Doris 先将列存的 Block 快速转换为列存的 Arrow RecordBatch,随后在 Python 客户端中,将 不仅如此,Arrow Flight SQL 还提供了通用的 JDBC 驱动,支持与同样遵循 Arrow Flight SQL 协议的数据库无缝交互,这不仅增强了 Apache Doris 的兼容性,还为其拓展了更广泛的应用场景 未来,Apache Doris 计划支持 Arrow Flight SQL 写入,届时由主流编程语言构建的系统均可借助 ADBC 客户端来读写 Doris,实现高速的数据交互;并计划利用 Arrow Flight

    1.2K10编辑于 2024-04-07
  • 来自专栏QAPM-腾讯客户端性能分析

    Apache Arrow - 大数据在数据湖后的下一个风向标

    一句话概括,Arrow用于系统间高效交互数据的组件。 Arrow的核心能力 Arrow本身不是一个存储、执行引擎,它只是一个交互数据的基础库。 接着来到2015年,Wes团队遇到了Jacques和Apache Drill社区的小伙伴们,两伙人不谋而合,开始了合作。

    - Wes McKinney

    此外,Wes在和Apache Impala团队合作的时候,发现Impala的代码中有大量和pandas做相似事情的片段,比如CSV 直接可以操作数据,存取、计算: [数据操作] Arrow列格式 :construction: 本节内容翻译整理自apache/arrow代码仓库中Arrow Columnar Format规范。 最后补上一张图作为Arrow的优点、限制的总结: [总结] 参考 Wes和Jacques的视频访谈: Starting Apache Arrow Arrow起名投票: Vector Naming Discussion

    5.7K40发布于 2021-11-18
  • 来自专栏生信探索

    使用Arrow管理数据

    Format https://arrow.apache.org Apache Arrow defines a language-independent columnar memory format for R install.packages("arrow") library(arrow) # write iris to iris.arrow and compressed by zstd arrow::write_ipc_file (iris,'iris.arrow', compression = "zstd",compression_level=1) # read iris.arrow as DataFrame iris=arrow ) using Arrow, DataFrames # read iris.arrow as DataFrame iris = Arrow.Table("iris.arrow") |> DataFrame # write iris to iris.arrow, using 8 threads and compressed by zstd Arrow.write("iris.arrow",iris,compress

    51540编辑于 2023-04-03
领券